#ifndef __WIZ_DESIGNPATTERN_ITERATOR_FORWARD_HPP__SHANHAOBO_19800429__
#define __WIZ_DESIGNPATTERN_ITERATOR_FORWARD_HPP__SHANHAOBO_19800429__

#include "./WizDesignPatternIterator.hpp"

namespace Wiz
{
    namespace DesignPattern
    {
        namespace Iterator
        {
            namespace Forward
            {
                /// ::Wiz::Void::Type   Next();
                template<class DerivedT, class ContainerT, class ElementT, class BaseT = ::Wiz::Null::Type>
                class Type : public
                    ::Wiz::Operators::Inc<DerivedT,
                    ::Wiz::DesignPattern::Iterator::Base::Type<DerivedT, ContainerT, ElementT, BaseT>>
                {
                public:
                    Type()
                    {
                        m_ContainerPtr = WIZ_NULLPTR;
                        m_ElementPtr = WIZ_NULLPTR;
                    }
                    Type(ContainerT* CPtr)
                    {
                        m_ContainerPtr = CPtr;
                        m_ElementPtr = WIZ_NULLPTR;
                    }
                    virtual ~Type()
                    {
                    }
                public:
                    friend DerivedT& operator++(DerivedT& X)
                    {
                        X.Next();
                        return X;
                    }
                }; /// end of class Type
            } /// end of namespace Forward
        } /// end of namespace Iterator
    } /// end of namespace DesignPattern
} /// end of namespace Wiz

#endif /*__WIZ_DESIGNPATTERN_ITERATOR_FORWARD_HPP__SHANHAOBO_19800429__*/
